The present invention generally relates to disk storage devices for computer systems and, more particularly, to method and system for redundant disk array storage systems.
A typical data processing system generally involves one or more storage units which are connected to a Central Processor Unit (CPU) either directly or through a control unit and a channel. The function of the storage units is to store data and programs which the CPU uses in performing the variety of data processing tasks.
Various type of storage units are used in current data processing systems. A typical system may include one or more large capacity tape units and/or disk drives (magnetic, optical, or semiconductor-based) connected to the system through respective control units for storing data. However, a problems exists if one of the large capacity storage units fails such that information contained in that unit is no longer available to the system. Generally, such a failure will shut down the entire computer system.
The prior art has suggested several ways of solving the problem of providing reliable data storage. In systems where records are relatively small, it is possible to use error correcting codes (xe2x80x9cECCxe2x80x9d) which generate ECC syndrome bits that are appended to each data record within a storage unit. With such codes, it is possible to correct a small amount of data that may be read erroneously. However, such codes are generally not suitable for correcting or recreating long records which are in error, and provide no remedy at all if a complete storage unit fails.
Other approaches to such external reliability have been described in the art. A research group at the University of California, Berkeley, in a paper entitled xe2x80x9cA Case for Redundant Arrays of Inexpensive Disks (RAID)xe2x80x9d, Patterson, et al., Proc. ACM SIGMOD, June 1988, has catalogued a number of different approaches for providing such reliability when using disk drives as storage units. Arrays of disk drives are characterized in one of five architectures, under the acronym RAID.
For example, a RAID 1 architecture involves providing a duplicate set of xe2x80x9cmirrorxe2x80x9d storage units and keeping a duplicate copy of all data on each pair of storage units. A RAID 2 architecture stores each bit of each word of data, plus Error Detection and Correction (EDC) bits for each word, on separate disk drives (also known as xe2x80x9cbit strippingxe2x80x9d). A RAID 3 architecture is based on the concept that each disk drive storage unit has internal means for detecting a fault or data error. A RAID 4 architecture uses the same parity error correction concept of the RAID 3 architecture, but improves on the performance of a RAID 3 system with respect to random reading of small files by xe2x80x9cuncouplingxe2x80x9d the operation of the individual disk drive actuators, and reading and writing a larger minimum amount of data (typically, a disk sector) to each disk (also know as block stripping). Finally, a RAID 5 architecture uses the same parity error correction concept of the RAID 4 architecture and independent actuators, but improves on the writing performance of a RAID 4 system by distributing the data and parity information across all of the available disk drives.
Implementation wise, referring FIG. 1 showing an implementation of a disk array system, a host 10 communicates with the disk array subsystem 12 via a host adapter 14. The host adapter 14 is communicatively connected to a service controller 16, a cache memory 18, a table memory 20, and a device adapters 22. The device adapter 22 is connected to a number of drives (Drive 0-Drive n). Each drive is divided into a number of logical drives (e.g. logical device 0 (xe2x80x9cLD0xe2x80x9d) to logical device 4 (xe2x80x9cLD4xe2x80x9d)) which can be of various sizes and types. The logical drives having the same logical drive numbers are assigned to a single RAID group.
The original design of the mapping of logical devices to the physical drives was based upon the devices being mapped in ascending order of their device number to the ascending order of the physical drive addresses and group number and only occurring at initial microcode load. FIG. 2 illustrates via a table the relationship between physical disk drives, logical devices and RAID groups. As explained above, a physical drive may be divided into a number of logical devices and a number of logical devices may be assigned to the same RAID group. For example, as illustrated, each physical drive is partitioned into several logical drives where logical devices 0-4 are assigned to RAID group 0, logical devices 5-9 are assigned to RAID group 1, and logical devices A-E are assigned to RAID group 2. This is one (1) set of three (3) RAID groups each having five (5) logical devices across ten (10) physical drives.
In assigning the logical devices to the RAID groups, referring to FIG. 2, logical device 0 is assigned to RAID group 0, starting at address 0 for a given Device Controller (xe2x80x9cDCxe2x80x9d) pair. Logical device 1, then, is mapped at logical device 0""s address plus one (1). Each device configured to the device controller pair for this group of drives is then mapped in the same way until the group is full, at which time the next RAID group will be mapped, continuing to the third RAID group until all devices have been assigned a physical location, or there is no more drive space available. Once these devices are mapped and initialized, any change in the logical device configuration (adding or removing a logical device) will change the physical mapping of all devices on a given DC pair with larger logical device numbers than the one removed. This may result in the loss of access to data.
For example, referring to FIG. 3, if for whatever reason logical device 2 is removed or deleted, the physical location on the drives for each logical devices (e.g. logical devices 3-E) would change due to the removal of logical device 2. Data in logical device 3 would be in the address space for logical device 4 and the data for logical device 3 would now appear to be corrupted. The asterisks in FIG. 3 indicate the logical devices with corrupted data.
In order to change the logical device configuration, the data must be first off-loaded to save it before re-configuring the system. After the new configuration and mapping has been completed, the data is re-loaded to new physical locations for the corresponding devices. FIG. 4 illustrates the re-organization of the logical devices through the off-loading and re-loading process. In a first column 30, the stripe of a RAID group is illustrated and in a second column 32 (for a RAID group 0) the logical devices are illustrated. In a third column 34, logical device 8 is added and all logical devices having a higher reference numbers are shifted down through the off-load and re-load operations. In a fourth column 36, logical device 2 is removed and all logical devices having higher reference numbers are shifted up through the off-load and re-load operations.
The problem is that when the disk array subsystem is being off-loaded or re-loaded, the subsystem is not available for access. For mission critical systems, this is not an acceptable situation. Therefore, there is a desire for a method and system for addition and/or removal of logical devices without having to off-load and re-load the disk array subsystem and thereby providing non-disruptive and continuous system operation.
It is therefore an object of the present invention to provide a method and system for the non-disruptive addition and deletion of logical devices.
It is another object of the present invention to provide a method and system for maintaining system operation without noticeable degradation in system performance while adding or deleting logical devices.
Briefly, in a presently preferred embodiment of the present invention, a method and system is provided where once the disk array subsystem has been initialized and mapped, addition and deletion of logical drives will be made without interruption to system operation. In adding a logical device, a method is provided to determine the amount of space required in adding the new logical device and the amount of physical space available for such operation. In adding such a new logical device, the data of the new logical device may be placed anywhere on the physical drives. In deleting a logical device, the space made available when deleting the data of the logical device creates a physical gap to the original mapping where the gap could be filled by subsequent additions of new logical devices. Once a new mapping is determined, the mapping is sent to the adapters and device controllers to update the mapping information available to the adapters and the device controllers in order for the adapters and the device controllers to properly address data in the disk array subsystem.
An object of the present invention is to provide a method and system for the nondisruptive addition and deletion of logical devices.
Another object of the present invention is to provide a method and system for maintaining system operation without noticeable degradation in system performance while adding or deleting logical devices.
These and other features and advantages of the present invention will become well understood upon examining the figures and reading the following detailed description of the invention.